package accion;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import bean.Vivienda;

public class ViviendaAccion {
	private ArrayList<Vivienda> listaVivienda = new ArrayList<Vivienda>();
	private String rutaVivienda="C:/BD/vivienda.txt";
	
	public ArrayList<Vivienda> inicializarTablaVivienda() {

		FileReader fr = null;
		BufferedReader br = null;

		try {
			fr = new FileReader(rutaVivienda);
			br = new BufferedReader(fr);

			String linea;
			Vivienda vivienda = null;
			while ((linea = br.readLine()) != null) {
				String[] datos = linea.split("#");
				vivienda = new Vivienda(datos[0],datos[1], Integer.parseInt(datos[2]),datos[3], datos[4]);

				listaVivienda.add(vivienda);
			}

		} catch (FileNotFoundException e) {

			e.printStackTrace();
		} catch (IOException e) {

			e.printStackTrace();
		} finally {

			try {
				if (null != fr) {
					fr.close();
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}

		return listaVivienda;
	
}
 public int ingresarVivienda(Vivienda vivienda) {
		
		int ingreso = 0;
		
		if (existeVivienda(vivienda) == false) {
			listaVivienda.add(vivienda);
			ingreso=1;
		}
		actualizarTablaVivienda();
		return ingreso;
	}
	
	public int actualizarVivienda(Vivienda vivienda){
		int actualizacion=0;
		int indiceDeLista = -1;
		int indiceaEliminarDeLista = 0;
		
		for(Vivienda viviendaDeLista:listaVivienda){
			indiceDeLista++;
			if(viviendaDeLista.getCodigo().equals(vivienda.getCodigo())){

				indiceaEliminarDeLista = indiceDeLista;
				actualizacion=1;
			}
		}
				listaVivienda.remove(indiceaEliminarDeLista);
				listaVivienda.add(indiceaEliminarDeLista, vivienda);
				actualizarTablaVivienda();

				return actualizacion;
	}

public void actualizarTablaVivienda() {
	try{
		PrintWriter pw= new PrintWriter(new FileWriter(rutaVivienda));
			for(Vivienda viviendaDeLista : listaVivienda){
			pw.println(viviendaDeLista.getCodigo() + "#"
					+ viviendaDeLista.getUbicacion() + "#"
			        + viviendaDeLista.getNumero() + "#"
			        + viviendaDeLista.getMetraje() + "#"
			        + viviendaDeLista.getTipo() + "#");
			}
		pw.close();
				
	}
	catch(Exception ex){
		
	}
}	

public boolean existeVivienda(Vivienda vivienda) {
	
	boolean existeVivienda = false;

	for (Vivienda viviendaDeLista : listaVivienda) {
		if (viviendaDeLista.getCodigo().equals(vivienda.getCodigo()))
		{
			existeVivienda = true;
		}
	}

	return existeVivienda;

}

public Vivienda obtenerVivienda(Vivienda vivienda) {

	Vivienda viviendaObtenido = null;

	for (Vivienda viviendaDeLista : listaVivienda) {

		if (viviendaDeLista.getCodigo().equals(vivienda.getCodigo())) {

			viviendaObtenido = viviendaDeLista;

		}
	}

	return viviendaObtenido;
}

}
